package xlog

type TypeInfo struct {
	Key    string `json:"key"`
	Name   string `json:"name"`
	NameCN string `json:"name_cn"`
}

// 获取错误分类列表
// 此列表会按照错误等级来进行获取
func GetLogType() []TypeInfo {
	return []TypeInfo{
		{Key: "I", Name: "Info", NameCN: "详情"},
		{Key: "N", Name: "Notice", NameCN: "提示"},
		{Key: "D", Name: "Debug", NameCN: "调试"},
		{Key: "W", Name: "Warning", NameCN: "警告"},
		{Key: "E", Name: "Error", NameCN: "错误"},
		{Key: "C", Name: "Crit", NameCN: "生命错误"},
		{Key: "A", Name: "Alert", NameCN: "严重错误"},
		{Key: "P", Name: "Panic", NameCN: "致命错误"},
	}
}

// 获取分类以上的等级列表
//
//	typ	基础分类
//	big	是否查询比此条目高的条目
func GetLogTypeBigs(typ string, big bool) []string {
	types_list := GetLogType()
	for i := 0; i < len(types_list); i++ {
		if types_list[i].Key == typ {
			return getLogTypeBigs(i, big)
		}
	}
	return []string{"NULL"}
}

// 获取大于i的分级列表
//
//	i	如果传入i，则只返回对应分类的恩济列表
//	big	是否返回高于i的分级列表
func getLogTypeBigs(i int, big bool) []string {
	outs := []string{}
	types_list := GetLogType()
	if big {
		for j := i; j < len(types_list); j++ {
			outs = append(outs, types_list[j].Key)
		}
	} else {
		outs = append(outs, types_list[i].Key)
	}
	return outs
}
